///#begin en
//
//  Copyright (c) 2016 MyCamCloud. All rights reserved.
//
///#end

#import "HKSServerClient.h"
@class HKSDeviceAlarmItem;
@interface HKSServerClient (Alarm)


///#begin zh-cn
/**
 *  @brief       查询系统事件列表
 *
 *  @param[out]  outSystemLogs[NSMutableArray->HKSSystemLogItem] 系统事件列表
 *
 *  @return      [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since       v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)querySystemLog:(NSMutableArray *)outSystemLogs;


///#begin zh-cn
/**
 *  @brief          查询报警通知语言
 *
 *  @param[in]      theType[int]                获取类型，0：推送，1：短信
 *  @param[in]      theToken[NSString]          手机推送Token
 *  @param[out]     theNotifyLanguage[NSString] 当前语言,HKS_NPC_D_MON_LANGUAGE_*
 *  @return         [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)armQueryNotifyLanguage:(int)theType
                        token:(NSString *)theToken
            outNotifyLanguage:(NSMutableString *)theNotifyLanguage;

///#begin zh-cn
/**
 *  @brief      设置报警通知语言,该接口需要登录完成以后才能调用，该接口为租塞接口，只有在登录服务器成功，或者用户注销以后才会执行结束，所以需要单独放在一个线程里面执行，
 *
 *  @param[in]  theType[int]                获取类型，0：推送，1：短信
 *  @param[in]  theToken[NSString]          手机推送Token
 *  @param[in]  theNotifyLanguage[NSString] 当前语言,HKS_NPC_D_MON_LANGUAGE_*
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)armSetNotifyLanguage:(int)theType
                      token:(NSString *)theToken
             notifyLanguage:(NSString *)theNotifyLanguage;


///#begin zh-cn
/**
 *  @brief      删除服务器上该设备的所有报警记录
 *
 *  @param[in]  theCarmId[NSString]     设备sDevId（即摄像机ID，非UMID）
 *  @param[in]  theDelMode[int]         删除模式，0：删除该用户下的所有报警记录，1：删除该用户下的当前设备的所有报警记录
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_delAllArmLog:(NSString *)theCarmId delMode:(int)theDelMode;


///#begin zh-cn
/**
 *  @brief      删除报警记录
 *
 *  @param[in]  armId[NSString]     需要删除的报警记录相对应的报警记录id
 *
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_delArmLog:(NSString *)armId;


///#begin zh-cn
/**
 *  @brief          根据设备sDevId查询报警记录
 *
 *  @param[in]      devId[NSString]                 设备的sDevId（即摄像机ID，非UMID），如果需要查询该用户下面所有设备的报警记录，请填写nil
 *  @param[out]     outArmLogArray[NSMutableArray]  查询到的所有报警记录数据
 *
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_queryArmLog:(NSString *)devId
        outArmLogArray:(NSMutableArray *)outArmLogArray;

///#begin zh-cn
/**
 *  @brief          根据时间查询报警记录
 *
 *  @param[in]      devId[NSString]                             设备的sDevId（即摄像机ID，非UMID），如果为nil,表示查询所有查询所有设备的报警记录
 *  @param[in]      queryAlarmType[HKS_NPC_D_MON_ALARM_TYPE]    查询报警事件，参考HKS_NPC_D_MON_ALARM_TYPE_*定义，如果为0，表示查询所有类型
 *  @param[in]      startDate[Date_Time]                        查询开始时间，如果usYear为0，表示不限制开始时间
 *  @param[in]      endDate[Date_Time]                          查询结束时间，如果usYear为0，表示不限制结束时间
 *  @param[out]     outArmLogArray[NSMutableArray]              查询到的所有报警记录数据
 *
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_queryArmLog:(NSString *)devId
        queryAlarmType:(HKS_NPC_D_MON_ALARM_TYPE)queryAlarmType
             startDate:(Date_Time)startDate
               endDate:(Date_Time)endDate
        outArmLogArray:(NSMutableArray *)outArmLogArray;

// 查询布防信息
- (HKS_NPC_D_MPI_MON_ERROR)arm_queryArmInfo:(NSString *)devId
            bIfSetAlarm:(int *)bIfSetAlarm;

- (HKS_NPC_D_MPI_MON_ERROR)arm_queryArmInfo:(NSString *)devId
              alarmItem:(HKSDeviceAlarmItem *)alarmItem;


///#begin zh-cn
/**
 *  @brief      服务器设备布防，并且开启该手机的消息推送
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @param[in]  armTypes[NSString]  需要设置的报警类型，详情请参考HKS_NPC_D_MON_ALARM_TYPE_*，多个请用","符号区分并拼装成字符串类型，代码块:
        1、设置布防侦测：NSString stringWithFormat:@"%d",HKS_NPC_D_MON_ALARM_TYPE_MOTION]
        2、同时布防移动侦测和视频遮挡:[NSString stringWithFormat:@"%d,%d",HKS_NPC_D_MON_ALARM_TYPE_MOTION,HKS_NPC_D_MON_ALARM_TYPE_VIDEO_BLIND],
 *  @param[in]  theToken[NSString]  苹果推送的Token值
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_setAlarm:(NSString *)devId
           armTypes:(NSString *)armTypes
              token:(NSString *)theToken;

///#begin zh-cn
/**
 *  @brief      服务器设备布防
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @param[in]  armTypes[NSString]  需要设置的报警类型，详情请参考HKS_NPC_D_MON_ALARM_TYPE_*，多个请用","符号区分并拼装成字符串类型，代码块:
        1、设置布防侦测：NSString stringWithFormat:@"%d",HKS_NPC_D_MON_ALARM_TYPE_MOTION]
        2、同时布防移动侦测和视频遮挡:[NSString stringWithFormat:@"%d,%d",HKS_NPC_D_MON_ALARM_TYPE_MOTION,HKS_NPC_D_MON_ALARM_TYPE_VIDEO_BLIND],
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_setAlarm:(NSString *)devId
           armTypes:(NSString *)armTypes;


///#begin zh-cn
/**
 *  @brief      服务器设备撤防
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_cancelAlarm:(NSString *)devId;

///#begin zh-cn
/**
 *  @brief      服务器设备撤防，并且关闭该手机的消息推送
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @param[in]  theToken[NSString]  苹果推送的Token值
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_cancelAlarm:(NSString *)devId
                 token:(NSString *)theToken;


///#begin zh-cn
/**
 *  @brief      服务器设备设置通知
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @param[in]  notifyType[int]     通知类型，参考HKS_NPC_D_MON_ALARM_NOTIFY_TYPE_*定义
 *  @param[in]  param[NSString]     [IN]通知参数，根据通知类型确定通知参数内容，如IOS手机推送为TOKEN，短信为手机号码，EMAIL为EMAIL地址
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_setNotifyParam:(NSString *)devId
					 Type:(int)notifyType
					Param:(NSString *)param;

///#begin zh-cn
/**
 *  @brief      服务器设备关闭通知
 *
 *  @param[in]  devId[NSString]     设备的sDevId
 *  @param[in]  notifyType[int]     通知类型，参考HKS_NPC_D_MON_ALARM_NOTIFY_TYPE_*定义
 *  @param[in]  param[NSString]     [IN]通知参数，根据通知类型确定通知参数内容，如IOS手机推送为TOKEN，短信为手机号码，EMAIL为EMAIL地址
 *  @return     [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since      v1.0.0.0
 */
///#end
///#begin en
///#end
- (HKS_NPC_D_MPI_MON_ERROR)arm_cancelNotifyParam:(NSString *)devId
						Type:(int)notifyType
					   Param:(NSString *)param;

/**
 *  @brief          获取客户端消息通知状态
 *  @param[out]     outState[unsigned int *] 输入当前状态,1:接收推送，0:不接收推送
 *  @return[int]    [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v2.4.5.0
 */
- (HKS_NPC_D_MPI_MON_ERROR)queryPushMsgState:(unsigned int *)outState;


/**
 *  @brief          设置客户端是否接收消息通知
 *  @param[in]      state[int] 状态,1:接收推送，0:不接收推送
 *  @return[int]    [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v2.4.5.0
 */
- (HKS_NPC_D_MPI_MON_ERROR)setPushMsgState:(unsigned int)state;


/**
 *  @brief          获取客户端消息通知参数
 *  @param[out]     outState[unsigned int *] 输入当前状态,1:接收推送，0:不接收推送
 *  @param[out]     outNotRaedCount[int *] 当前推送消息未读数
 *  @return[int]    [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v2.4.6.0
 */
- (HKS_NPC_D_MPI_MON_ERROR)clientPushParam:(unsigned int *)outState
                           outNotReadCount:(int *)outNotRaedCount;

/**
 *  @brief          设置客户端推送参数
 *  @param[in]      state[int] 状态,1:接收推送，0:不接收推送,-1:不修改
 *  @param[in]      aNotRaedCount[int] 设置推送未读数量,-1:不修改
 *  @return[int]    [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v2.4.6.0
 */
- (HKS_NPC_D_MPI_MON_ERROR)setClientPushParam:(int)aState
                              outNotReadCount:(int)aNotRaedCount;


/**
 *  @brief          更新登录帐号下的客户端ID的TOKEN，即更新的关键字为：帐号、客户端类型、客户端ID。
 *  @param[in]      aToken[NSString] 推送手机的token
 *  @return[int]    [int]返回状态,请参考HKS_NPC_D_MPI_MON_ERROR_*定义
 *  @since          v2.4.5.0
 */
- (HKS_NPC_D_MPI_MON_ERROR)setPushClientToken:(NSString *)aToken;


@end
